[sql] kleinste freie ID ermitteln

olger
Wie kann ich in einer SQL Tabelle die kleinste frei ID ermitteln.
GreenRover
Also das ist nicht so einfach, dafür wirst du etasm ehr als eine einfahc SLQ Abfrage benötigen, da sowas eigentlich nciht vorgesehen ist.

Aber hier der Coder für alles unter Mysql 4.1

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?php function get_free_id$_table$_field="`id`");
{
 $i=0;

 $sql="SELECT $_field FROM $_table ORDER BY $_field ASC";

 $result=mysql_query($sql);
 while(list($id)=mysql_fetch_row($result))
 {
  $i++;
  if($id!=$id) 
  {
   break;
   return $i;
  }
 }
 return $i++;
} ?>


Für die User, die einen Verison von MySQL über 4.1 haben, können auf etwas wie:

php:
1:
2:
3:
<?php list($id)=mysql_fetch_row(mysql_query("SELECT MIN(neures) 
FROM ( SELECT $_field+1 as neures FROM $_table WHERE ($_field+1) 
NOT IN ( SELECT $_field FROM $_table as alle) ) as neue;")); ?>


zurückgriefen.